package com.linln.common.utils;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class FilterUtil {

    /**
     * 过滤掉对象中的 null 字段，返回一个 Map，其中只包含非 null 的字段。
     *
     * @param obj 需要过滤的对象
     * @return 只包含非 null 字段的 Map
     */
    public static Map<String, Object> filterNullFields(Object obj) {
        Map<String, Object> filteredFields = new HashMap<>();

        // 获取对象的所有字段
        Field[] fields = obj.getClass().getDeclaredFields();

        for (Field field : fields) {
            field.setAccessible(true);  // 设置可访问私有字段
            try {
                Object value = field.get(obj);

                // 只将非 null 字段添加到 Map 中
                if (value != null) {
                    filteredFields.put(field.getName(), value);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

        return filteredFields;
    }

}
